from nicegui import ui
import plotly.graph_objs as go

# 创建一个空的散点图
fig = go.Figure(data=[go.Scatter(x=[], y=[], mode='markers')])

# 创建输入框和按钮
with ui.column():
    x_input = ui.number(label='X 值', value=0)
    y_input = ui.number(label='Y 值', value=0)
    button = ui.button('加入该点')

# 创建 Plotly 图表，并放大尺寸
plot = ui.plotly(fig).classes('w-full h-120')  # 增加高度为 384px

# 定义按钮点击事件
def add_point():
    x = x_input.value
    y = y_input.value

    # 更新现有的 Scatter 对象的 x 和 y 数据
    fig.data[0].x = list(fig.data[0].x) + [x]
    fig.data[0].y = list(fig.data[0].y) + [y]

    # 手动更新图表
    plot.data = [fig.data[0]]
    plot.update()

# 绑定按钮点击事件
button.on_click(add_point)

# 启动 NiceGUI 应用
ui.run()